home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / update-fonts-alias < prev    next >
Text File  |  2008-05-12  |  5KB  |  163 lines

  1. #!/bin/sh
  2.  
  3. # $Id: update-fonts-alias 189 2005-06-11 00:04:27Z branden $
  4.  
  5. # This program compiles fonts.alias files for X font directories; see
  6. # mkfontdir(1x) for a description of the format of fonts.alias files.
  7.  
  8. # Copyright 1999, 2001, 2002, 2004 Branden Robinson.
  9. # Copyright 2006 Steve Langasek.
  10. # Licensed under the GNU General Public License, version 2.  See the file
  11. # /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
  12.  
  13. PROGNAME=${0##*/}
  14.  
  15. # Query the terminal to establish a default number of columns to use for
  16. # displaying messages to the user.  This is used only as a fallback in the event
  17. # the COLUMNS variable is not set.  ($COLUMNS can react to SIGWINCH while the
  18. # script is running, and this cannot, only being calculated once.)
  19. DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true
  20. if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" >/dev/null 2>&1; then
  21.     DEFCOLUMNS=80
  22. fi
  23.  
  24. # Display a message, wrapping lines at the terminal width.
  25. message () {
  26.     echo "$*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS}
  27. }
  28.  
  29. # Display a warning message.
  30. warn () {
  31.     message "warning: $*" >&2
  32. }
  33.  
  34. # Display an error message and exit.
  35. die () {
  36.     message "fatal error: $*" >&2
  37.     exit 1
  38. }
  39.  
  40. # Display a usage message.
  41. usage () {
  42.     if [ -n "$*" ]; then
  43.         message "usage error: $*"
  44.     fi
  45.     cat <<EOF
  46. Usage: $PROGNAME DIRECTORY ...
  47.        $PROGNAME { -h | --help }
  48. This program combines X font alias information from several packages into a
  49. single file that is placed in each specified X font directory DIRECTORY.  This
  50. utility is primarily useful to Debian package maintainer scripts.  See
  51. update-fonts-alias(8) for more information.
  52. Options:
  53.     -h, --help                        display this usage message and exit
  54. EOF
  55. }
  56.  
  57. X11R7_LAYOUT=
  58.  
  59. # Validate arguments.
  60. case "$1" in
  61.     -h|--help)
  62.         usage
  63.         exit 0
  64.         ;;
  65.     -7|--x11r7-layout)
  66.         X11R7_LAYOUT=true
  67.         shift
  68.         ;;
  69. esac
  70.  
  71. case "$1" in
  72.     -*)
  73.         usage "unrecognized option" >&2
  74.         exit 2
  75.         ;;
  76. esac
  77.  
  78. if [ $# -eq 0 ]; then
  79.     usage "one or more font directories must be specified" >&2
  80.     exit 2
  81. fi
  82.  
  83. while [ -n "$1" ]; do
  84.     # Try to be clever about the argument; were we given an absolute path?
  85.     if expr "$1" : "/.*" >/dev/null 2>&1; then
  86.         # Yes; an absolute path to an X font directory was provided.
  87.         X11R7DIR=$1
  88.         ETCDIR=/etc/X11/fonts/${X11R7DIR##*/}
  89.         ETC7DIR=/etc/X11/fonts/X11R7/${X11R7DIR##*/}
  90.         if [ "$X11R7DIR" = "$ETCDIR" ] || [ "$X11R7DIR" = "$ETC7DIR" ]; then
  91.             # We were given an /etc directory as an argument.
  92.             die "path to X font directory must be used"
  93.         else
  94.             warn "absolute path $X11R7DIR was provided"
  95.         fi
  96.     else
  97.         # No; a relative path was provided -- assume we were given just the
  98.         # basename.
  99.         X11R7DIR=/usr/share/fonts/X11/$1
  100.         ETCDIR=/etc/X11/fonts/$1
  101.         ETC7DIR=/etc/X11/fonts/X11R7/$1
  102.     fi
  103.  
  104.     shift
  105.  
  106.     # Confirm that the directories to be operated on exist.
  107.     VALIDSRC=
  108.     if [ -d "$ETCDIR" ]; then
  109.         VALIDSRC=yes
  110.     else
  111.         warn "$ETCDIR does not exist or is not a directory"
  112.     fi
  113.     if [ -d "$ETC7DIR" ]; then
  114.         VALIDSRC=yes
  115.     else
  116.         if [ -n "$X11R7_LAYOUT" ]; then
  117.             warn "$ETC7DIR does not exist or is not a directory"
  118.         fi
  119.     fi
  120.  
  121.     VALIDDEST=
  122.     if [ -d "$X11R7DIR" ]; then
  123.             VALIDDEST=yes
  124.     else
  125.         warn "$X11R7DIR does not exist or is not a directory"
  126.     fi
  127.  
  128.     if [ -z "$VALIDSRC" ] || [ -z "$VALIDDEST" ]; then
  129.         continue
  130.     fi
  131.  
  132.     # Are there any files to process?
  133.     if [ "$(echo "$ETCDIR"/*.alias "$ETC7DIR"/*.alias)" != "$ETCDIR/*.alias $ETC7DIR/*.alias" ]
  134.     then
  135.         if [ -n "$X11R7DIR" ] && [ -d "$X11R7DIR" ]; then
  136.             # Write the new alias file in a temporary location in case we are
  137.             # interrupted.
  138.             cat >"$X11R7DIR/fonts.alias.update-new" <<EOF
  139. !! fonts.alias -- automatically generated file.  DO NOT EDIT.
  140. !! To modify, see update-fonts-alias(8).
  141. EOF
  142.             for FILE in "$ETCDIR"/*.alias "$ETC7DIR"/*.alias; do
  143.                 [ -e "$FILE" ] || continue
  144.                 echo "!! $FILE" >>"$X11R7DIR/fonts.alias.update-new"
  145.                 cat "$FILE" >>"$X11R7DIR/fonts.alias.update-new"
  146.             done
  147.             mv "$X11R7DIR/fonts.alias.update-new" "$X11R7DIR/fonts.alias"
  148.         fi
  149.     else
  150.         if [ -n "$X11R7DIR" ] && [ -d "$X11R7DIR" ]; then
  151.             # There are no files to process; remove any alias file already in
  152.             # the font directory.
  153.             rm -f "$X11R7DIR/fonts.alias"
  154.             # Remove the font directory if it is empty.
  155.             rmdir "$X11R7DIR" >/dev/null 2>&1 || true
  156.         fi
  157.     fi
  158. done
  159.  
  160. exit 0
  161.  
  162. # vim:set ai et sts=4 sw=4 tw=80:
  163.